<?php
class fAddNews extends aFeature 
{

  public function __construct() 
  {
    $this->_acl = new AccessControlList();
    //$this->_acl->setGranted(3); 
    $this->_acl->setGranted(7);
  }

  public static function getTocEntry()
  {
    return "Ajouter une news";
  }

  public static function getRealName() 
  {
    return "Formulaire d'ajout de news";
  }

  public static function getSemantic()
  {
    return "Ajoute une news dans le systême, qui sera disponible sur le site externe lors de la prochaine mise a jour";
  }

  protected function run() 
  {
    $action = PropRetriever::getProp($_POST,"action");
    if ($action == "add")
      return $this->add();
    else
      return $this->displayForm(array());
  }


  private function checkErrors()
  {
    $errors = array();

    $title   = PropRetriever::getProp($_POST,"title");
    if ($title == "")
      $errors["title"] = "Une news doit avoir un titre !";
    if (strlen($title) > 50)
      $errors["title"] = "Le titre ne doit pas faire plus de 50 caractères";

    $author  = PropRetriever::getProp($_POST,"author");
    if ($author == "")
      $errors["author"] = "Une news doit avoir un auteur !";
    if (strlen($author) > 50)
      $errors["author"] = "Le nom de l'auteur ne doit pas faire plus de 50 caractères";
    
    $content = PropRetriever::getProp($_POST,"content");
    if ($content == "")
      $errors["content"] = "Une news doit avoir un texte !";
    return $errors;
  }

  private function add() 
  {    
    $errors = $this->checkErrors();
    if (count($errors) != 0)
      return $this->displayForm($errors);

    $title   = PropRetriever::getProp($_POST,"title");
    $author  = PropRetriever::getProp($_POST,"author");
    $content = PropRetriever::getProp($_POST,"content");
    $date    = date("Y-m-d");
    $picture = "";
    $season  = Login::seasonChoosen();

    $aNews = new News($author,$date,$title,$content,$picture,$season);
    $aNews->create();

    $page = <<<EOS
<h1> Ajout de news </h1>

<p> Votre news a été correctement ajoutée dans le système d'<!-- '-->
    information </p>
<p> Elle sera disponible sur le site externe lors de la prochaine mise 
    à jour (13h ou minuit).</p>
EOS;
    $_POST["title"] = ""; $_POST["author"] = ""; $_POST["content"] = "";
    $_POST["action"] = "";

    return $page . $this->displayForm(array());
  }

  private function displayForm($errors)
  {

    $title = PropRetriever::getProp($_POST,"title");
    $author = PropRetriever::getProp($_POST,"author");
    $content = PropRetriever::getProp($_POST,"content");

    $style=array();
    $style["title"]   = 
      (PropRetriever::getProp($errors,"title")   == "" ? "":"class=\"error\"");
    $style["author"]  = 
      (PropRetriever::getProp($errors,"author")  == "" ? "":"class=\"error\"");
    $style["content"] = 
      (PropRetriever::getProp($errors,"content") == "" ? "":"class=\"error\"");

    $errorText = "";
    foreach($errors as $k) {
      $errorText .= "<li>".$k."</li>\n";
    }
    if ($errorText != "")
      $errorText = <<<EOS
<h2 class="error"> Des erreurs sont survenues ! </h2>
<ul class="error">
	${errorText}
</ul>
EOS;

    $page = <<<EOS
<h1> Ajout de news </h1>
      ${errorText}
<h2> Publication sur le site externe </h2>

<div align="center">
<form method="post" accept-charset="utf-8" name="addMatche" action="?add" >
<input type="hidden" name="action" value="add" />
<fieldset>
      <legend>News</legend>
      <br />
      <label> 
        <span ${style["title"]}>Titre : </span>
        <input type="text" name="title" class="edit" value="${title}" />
        &nbsp; &nbsp;
      </label> <br />
      <label>
        <span ${style["author"]}>Auteur : </span>
        <input type="text" name="author" class="edit" value="${author}" />
        &nbsp; &nbsp;
      </label>
      <label>
	  <div align="left"> <span ${style["content"]}> Texte : </span> </div>
        <textarea name="content" class="edit" rows="15">${content}</textarea> 
       </label>
       <br /> <br />
       <input type="submit" value="Ajouter" class="edit" />
							     &nbsp; &nbsp;
       <input type="reset" value="Remise a Zéro" class="edit" />
</fieldset>
</form>
</div>
EOS;
    return $page;
  }
}
?>